package Exception;

/* JVM在执行代码的过程中若发现了一个异常,则会实例化这种情况的异常实例,
并将代码整个执行过程完整设置到异常中来表示该错误报
告,设置完毕后将该异常抛出.若抛出异常的这句代码有被try包围,则
JVM会检查catch中是否有关注该异常关注则交给catch并解决,否则会将
异常抛出到当前方法外,由调用当前方法的代码解决该异常*/


//try块是用来扩上可能出错的代码片段 catch是用来捕获try块中代码抛出的错误,并解决
public class TryCatch {
    public static void main(String[] args) {
        /*不加try catch就会 不输出 程序结束自己 kill程序
        catch里是你捕获到异常 然后进行处理的方法
        */
        System.out.println("程序开始了");
        try {
            String str="a";
            System.out.println(str.length());
            System.out.println(str.charAt(0));
            System.out.println(Integer.parseInt(str));
        }catch (NullPointerException e){
            System.out.println("出现了空指针异常");

            /*应当养成一一个好习惯呢,在最后一个catch
            中捕获Exception.避免因未捕获异常导致 程序中断*/

           /*当多个catch捕获不同异常时,这些异常间
            存在继承关系,那么子类异常要在上先行
            捕获.父类异常在下*/

        }catch (StringIndexOutOfBoundsException e){
            System.out.println("字符串下标越界");
        }catch (Exception e){
            System.out.println("未知错误");
        }

        System.out.println("程序结束了");
    }
}
